// 云对象教程: https://uniapp.dcloud.net.cn/uniCloud/cloud-obj
// jsdoc语法提示教程：https://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/129
module.exports = {
	_before: function () { // 通用预处理器

	},
	/**
	 * 获取技师列表
	 * @param {string} param1 参数1描述
	 * @returns {object} 返回值描述
	 */
	 
	async getList(where,page=1,limit=10) {
		// 参数校验，如无参数则不需要
		if (!where || !limit) {
			return {
				errCode: 'PARAM_IS_NULL',
				errMsg: '参数不能为空'
			}
		}
		// 业务逻辑
		var db = uniCloud.database();
		var skip = (page - 1) * limit;
		var result = await db.collection('userinfo').where(where).skip(skip).limit(limit).get();
		// 返回结果
		return {
			code:200,
			message:'获取成功',
			result:result
		}
	},
	
	/**
	 * 作用：获取单条数据
	 * 
	 */
	async getOne(where){
		if (!where) {
			return {
				errCode: 'PARAM_IS_NULL',
				errMsg: '参数不能为空'
			}
		}
		// 业务逻辑
		var db = uniCloud.database();
		var result = await db.collection('userinfo').where(where).get({getOne:true});
		// 返回结果
		return {
			code:200,
			message:'获取成功',
			result:result
		}
	},
	
	/**
	 * 作用：获取单条数据
	 * 
	 */
	async getServiceItem(where){
		if (!where) {
			return {
				errCode: 'PARAM_IS_NULL',
				errMsg: '参数不能为空'
			}
		}
		// 业务逻辑
		var db = uniCloud.database();
		var result = await db.collection('service_items').where(where).orderBy('sort','asc').get();
		// 返回结果
		return {
			code:200,
			message:'获取成功',
			result:result
		}
	},
	
	/**
	 * 作用：判断收藏表是否已经存在该记录，如果不存在则写入数据库
	 * @param {Object} where:查询条件
	 * @param {Object} data:写入收藏表的数据
	 */
	async setCollect(where,data){
		var db = uniCloud.database();
		var technicianId = data.collect_user._id;
		var cmd = db.command;
		var result = await db.collection('collect').where(where).get();
		if(result.data && result.data[0]){
			return {
				code:201,
				message:'收藏过了',
				result:null
			}
		}else{
			//更新该技师的收藏数量
			var collect = db.collection('userinfo').where({
				_id:technicianId
			}).update({
				collect:cmd.inc(1)
			});
			var addResult = await db.collection('collect').add(data);
			if(addResult.id){
				return {
					code:200,
					message:'收藏成功',
					result:addResult
				}
			}
		}
	},
	
	/**
	 * 作用：取消收藏
	 */
	async cancelCollect(where){
		var db = uniCloud.database();
		var result = await db.collection('collect').where(where).remove();
		return {
			code:200,
			message:'取消成功',
			result:result
		}
	},
	
	/**
	 * 作用：判断该用户是否收藏过
	 */
	async isCollect(userId,collectUserId){
		var db = uniCloud.database();
		var where = {
			user_id:userId,
			'collect_user._id':collectUserId
		}
		var result = await db.collection('collect').where(where).get();
		return {
			code:200,
			message:'获取成功',
			result:result
		}
	},
	
	/**
	 * 作用：获取项目详情
	 */
	async getItemDetail(id){
		var db = uniCloud.database();
		var result = await db.collection('service_items').where({_id:id}).get();
		if(result.affectedDocs==1){
			//查询出用户信息
			var item = result.data[0];
			var userId = item.user_id;
			var user = await db.collection('userinfo').where({_id:userId}).get();
			var userinfo = user.data[0];
		}
		return {
			code:200,
			message:'获取成功',
			result:{
				item:item,
				user:userinfo
			}
		}
	},
	
	/**
	 * 作用：根据id获取地址详情
	 */
	async getAddressById(id){
		var db = uniCloud.database();
		var result = await db.collection('address').where({_id:id}).get();
		return {
			code:200,
			message:'获取成功',
			result:result
		}
	}
}
